package cn.pojo;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;


/**
 * 多表连接查询返回结果
 * 法二：实体类，需要@Entity等注解
 * <p>
 * JPA中，主键相同会导致查询的结果重复
 * 因为订单号相同，因此此时不能将orderId添加@Id注解
 * 商品号不同，因此可以改为productId添加@Id注解
 * 由此可知，@Id注解标注的属性不一定要为数据库中的主键
 * (虽然这样能出结果、但总感觉@Id这个注解不能乱用，等将来项目用到再深入研究。多表联合查询更推荐法一，返回结果仅为一个java普通类)
 * <p>
 * 注：该方法存在一个坑，主键相同会导致查询结果重复(即上面第二段描述的问题)！！！但感觉有些情况是无法避免没有重复列的~
 * 例如：根据userId(形参为userId)查询某用户的所有订单、且每个订单中包含的所有商品信息
 * 此时若是把orderId标注@Id注解，会导致商品结果重复;
 * 若是把productId标注@Id注解，因为不同订单可能含有相同商品，即productId也可能重复不适合做主键;
 * 其他属性也可能重复更不适合。
 * (除非返回的DO中加个userId属性、把他标记为@Id ?!)
 */
@Entity
@Data
public class OrderDO2 {
//     @Id
    @Column(name = "order_id")
    private Integer orderId;

    @Id
    @Column(name = "product_id")
    private Integer productId;

    @Column(name = "product_name")
    private String productName;

    @Column(name = "product_price")
    private Double productPrice;

    @Column(name = "product_factory")
    private String productFactory;
}
